

package jumavidesktop.GUI.Mantenimientos.Usuarios.Vistas;

import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import jumavidesktop.GUI.Mantenimientos.Mantenimiento;
import jumavidesktop.GUI.Mantenimientos.Usuarios.Controlador.MUsuarios;
import jumavidesktop.GUI.Mantenimientos.interfaz.IMantenimiento;
import jumavidesktop.Manejadores.Intefaces.INotificadoUsuario;
import jumavidesktop.Otros.Pojos.MyRespuesta;
import jumavidesktop.Persistencia.entidades.Usuario;

/**
 *
 * @author vimso
 */
public class MantenimientoUsuarios extends  Mantenimiento implements INotificadoUsuario{

    IMantenimiento<Usuario> manteni = new MUsuarios(); //Se inicializa
    PnelUsuario pnUsuario;
    PanelBuscarUsuario pnBuscar;
    JPanel jpAux;
    
    public MantenimientoUsuarios(JFrame padre) {
        super("Mantenimiento de usuarios"); 
        this.setPadre(padre);
        //añado el panel
        pnUsuario = new PnelUsuario();
        jpAux=super.getPnPadre();
        jpAux.setLayout(new BorderLayout());
        jpAux.add(pnUsuario,BorderLayout.CENTER);
        jpAux.setVisible(true); 
        super.myPostContructor();
    }
    
    @Override
    public void repintar(){//pinta el usuario actual del controlador.
        if(manteni.getEntidadActual()!=null){
            pnUsuario.actualizarPanel(manteni.getEntidadActual());
        }
        else
        {
            this.limpiarControles();
        }
        this.updateUI();
    }
    
    @Override
    public MyRespuesta accGuardar() {//pruebas. 
        MyRespuesta resp = manteni.guardar(pnUsuario.getUserPanel());
        if(resp.getTodoOK()){
          //  manteni.setEntidadActual(manteni.getEntidadActual());
            this.repintar();
        }
        return resp;
    }

    @Override
    public void accNuevo() {
        this.manteni.setEntidadActual(new Usuario());
        limpiarControles();
    }

    @Override
    public void accCancelar() {
        jpAux.removeAll();
        jpAux.add(pnUsuario,BorderLayout.CENTER);
        repintar();
    }

    @Override
    public MyRespuesta accEliminar() {
        MyRespuesta resp = manteni.eliminar(this.manteni.getEntidadActual());
        return resp;
    }

    @Override
    public void accBuscar() {//muestra el panel de busqueda...
        jpAux.removeAll();
        pnBuscar = new PanelBuscarUsuario();
        pnBuscar.registrarObserver(this);
        jpAux.add(pnBuscar,BorderLayout.CENTER);
        pnBuscar.setLabel_Usuario(manteni.getCriterioBusqueda());
    }

    @Override
    public void limpiarControles() {//borra el panel
        pnUsuario.borrarTodo();
    }
    

    @Override
    public IMantenimiento getControlador() {
        return this.manteni;
    }

    @Override
    public void accComboBox(String valor) {//recoge los cambios del combobox del padre.
        if(valor.equals(MUsuarios.orApellido)){
            this.manteni.campoBusqueda(valor);
        }
        else if(valor.equals(MUsuarios.orDNI)){
            this.manteni.campoBusqueda(valor);
        }
        else if(valor.equals(MUsuarios.orNombre)){
            this.manteni.campoBusqueda(valor);
        }
        
        //si estoy en la ventana de buscar, pongo opción del Combobox en el label de búsqueda.
        if(pnBuscar!=null){
            pnBuscar.setLabel_Usuario(manteni.getCriterioBusqueda());
        }
    }

    @Override
    public void update(Usuario user) {
        jpAux.removeAll();
        this.manteni.setEntidadActual(user);
        jpAux.add(pnUsuario,BorderLayout.CENTER);
        pnUsuario.borrarTodo();
        this.repintar();
    }
    
}
